class Trainee < Producto

	has_one			:estado_trainee
	has_one			:curriculum
	belongs_to	:estado_trainee
	belongs_to  :log_trainee, :dependent => :destroy
	
	
	validates_presence_of :nombre, :estado_trainee_id

	# Busca todos los trainees que esten en un estado en particular.
  def self.search_estado(page, estado_id)
		paginate :per_page => 4, :page => page,
		         :order => 'id', :conditions => ['estado_trainee_id = '+estado_id]
	end

	# Busca todos los trainees paginando el resultado.
  def self.search(page)
			paginate :per_page => 4, :page => page, :order => 'id'
	end

	# Verifica que haya estados disponibles.
	def self.hay_estados
		if EstadoTrainee.find(:all) then 
				return true
	 	else
	  		return false
		end		
	end

	# Busca todos los estados asignados.
	def self.listas_estados()
		@estado_ids = Trainee.find(:all).collect(&:estado_trainee_id) 
		@estado = EstadoTrainee.find(:all, :conditions => ['id in (?)',@estado_ids])   
	end

	# Busca los trainees que tengan un CV asociado
  def self.search_cv(page, cv)
	 @trainee_ids = Curriculum.find(:all).collect(&:trainee_id)
	 if cv == 'con' then
		 paginate :per_page => 4, :page => page,
		         :order => 'id', :conditions => ['id in (?)',@trainee_ids]
	 else 
	 		paginate :per_page => 4, :page => page,
	         :order => 'id', :conditions => ['id not in (?)',@trainee_ids]	 
	 end	
	 
	end
	
	# Busca todos los trainees que esten disponibles para ser asignados
	def self.trainees_disponibles ()
		@trainees_ids = Trainee.find(:all).collect (&:id) - Venta.find(:all,:conditions => ['producto_id != ?',0]).collect (&:producto_id)	
		@trainees = Trainee.find(:all, :conditions => ['id in (?)',@trainees_ids]).collect {|e| [e.nombre, e.id ] } 
	end
	
	# Busca todos los trainees que esten en la lista.
	def self.search_individuals(page, ids)
	 paginate :per_page => 4, :page => page,
		         :order => 'id', :conditions => ['id in (?)',ids]
	end

end
